/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is Forte for Java, Community Edition. The Initial * Developer of the Original Code is Sun Microsystems, Inc. Portions * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved. */ package org.netbeans.core.execution; import java.security.ProtectionDomain; import java.security.AccessControlContext; import java.security.AccessController; import java.security.Permission; import java.security.PermissionCollection; import java.util.ArrayList; import java.util.Iterator; import java.lang.reflect.Field; /** Tries to get an IOProtectionDomain from an AccessControlContext. * * @author Ales Novak */ class AccController { /** array of ProtectionDomains */ static Field context; static Field getContextField() throws Exception { if (context == null) { Field ctx = AccessControlContext.class.getDeclaredField("context"); // NOI18N ctx.setAccessible(true); context = ctx; } return context; } static ProtectionDomain[] getDomains(AccessControlContext acc) throws Exception { Object o = getContextField().get(acc); if (o.getClass() == Object[].class) { // 1.2.1 fix Object[] array = (Object[]) o; ProtectionDomain[] domains = new ProtectionDomain[array.length]; for (int i = 0; i < array.length; i++) { domains[i] = (ProtectionDomain) array[i]; } return domains; } return (ProtectionDomain[]) o; } /** @return an IOPermissionCollection or <tt>null</tt> if not found */ static IOPermissionCollection getIOPermissionCollection() { try { ProtectionDomain[] pds = getDomains(AccessController.getContext()); PermissionCollection pc; for (int i = 0; i < pds.length; i++) { pc = pds[i].getPermissions(); if (pc instanceof IOPermissionCollection) { return (IOPermissionCollection) pc; } } return null; } catch (final Exception e) { if (Boolean.getBoolean("netbeans.debug.exceptions")) { // NOI18N javax.swing.SwingUtilities.invokeLater(new Runnable () { public void run () { e.printStackTrace(); } }); } return null; } } } /* * Log * 9 src-jtulach1.8 1/12/00 Ales Novak i18n * 8 src-jtulach1.7 1/4/00 Ales Novak 1.2.1 fix * 7 src-jtulach1.6 12/29/99 Jaroslav Tulach Exception in invoke * later, so build starts. * 6 src-jtulach1.5 12/28/99 Jaroslav Tulach Now the build can start, * but I do not know where is the real problem. * 5 src-jtulach1.4 12/22/99 Ales Novak #5093 * 4 src-jtulach1.3 12/22/99 Ales Novak #5061 * 3 src-jtulach1.2 10/22/99 Ian Formanek NO SEMANTIC CHANGE - Sun * Microsystems Copyright in File Comment * 2 src-jtulach1.1 3/31/99 Ales Novak * 1 src-jtulach1.0 3/24/99 Ales Novak * $ */